const { PrismaClient } = require('@prisma/client');

const prisma = new PrismaClient();

async function debugCategoryCreation() {
  try {
    console.log('=== 分类创建调试 ===');
    
    // 检查用户数据
    const users = await prisma.user.findMany({
      select: {
        id: true,
        username: true,
        email: true,
        role: true,
        status: true
      }
    });
    
    console.log('可用用户:', users);
    
    if (users.length === 0) {
      console.log('❌ 没有找到用户数据');
      return;
    }
    
    // 使用第一个用户作为创建者
    const creatorId = users[0].id;
    console.log('使用创建者ID:', creatorId);
    
    // 尝试创建分类
    const categoryData = {
      name: '测试分类',
      description: '这是一个测试分类',
      slug: 'test-category',
      icon: 'folder',
      color: '#3B82F6',
      order: 0,
      parentId: null,
      createdById: creatorId
    };
    
    console.log('分类数据:', categoryData);
    
    // 检查数据库连接
    await prisma.$connect();
    console.log('✅ 数据库连接成功');
    
    // 尝试创建分类
    const category = await prisma.category.create({
      data: categoryData,
      select: {
        id: true,
        name: true,
        slug: true,
        createdAt: true
      }
    });
    
    console.log('✅ 分类创建成功:', category);
    
    // 清理测试数据
    await prisma.category.delete({
      where: { id: category.id }
    });
    console.log('✅ 测试分类已删除');
    
  } catch (error) {
    console.error('❌ 分类创建失败:', error);
    
    if (error.code === 'P2003') {
      console.log('外键约束违反，检查以下字段:');
      console.log('- createdById 是否存在于 users 表中');
      console.log('- parentId 是否存在于 categories 表中');
    }
    
    if (error.code === 'P2002') {
      console.log('唯一约束违反，检查以下字段:');
      console.log('- slug 是否已存在');
    }
  } finally {
    await prisma.$disconnect();
  }
}

debugCategoryCreation();
